package com.jhy.review.day06;

/**
 * 在一个有序数组中，找某个数是否存在
 * 2022年8月28日21:14:59
 */
public class BSExist {
    public static boolean exist(int[] arr, int num) {
//        判断不成立的条件
        if (arr == null || arr.length == 0) {
            return false;
        }
//        定义边界
        int l = 0;
        int r = arr.length - 1;
        int mid = 0;
        while (l < r) {
            //        保证不会越界
            mid = l + ((r-l) >> 1);
            if (arr[mid] == num) {
                return true;
            } else if (arr[mid] > num) {
                r = mid - 1;
            } else if (arr[mid] < num) {
                l = mid + 1;
            }
        }
        return arr[l] == num;
    }


    public static boolean exist2(int[] sortedArr, int num) {
        if (sortedArr == null || sortedArr.length == 0) {
            return false;
        }
        int L = 0;
        int R = sortedArr.length - 1;
        int mid;
        while (L < R) {
            mid = L + ((R - L) >> 1);
            if (sortedArr[mid] == num) {
                return true;
            } else if (sortedArr[mid] > num) {
                R = mid - 1;
            } else {
                L = mid + 1;
            }
        }
        return sortedArr[L] == num;
    }
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5, 6, 7, 10};
        boolean exist = exist(arr, 5);
        System.out.println(exist);
    }

}
